function generate_matrices(l,file)
 H=convertToSu2(1/sqrt(2)*[1 1;1 -1]);
 T=[exp(-1i*pi/8) 0;0 exp(1i*pi/8)];
 file_id=fopen(file,"w");
 stk=init_stack(l); 
 G={H,T,T'};
 generate(stk,l,G,file_id);
 fclose(file_id);
endfunction

function generate(stk,l,G,file_id)
 if(l==0)
  printInfo(stk,G,file_id);
  return;
 endif 
 for i=1:length(G)
  [r,stk]=push_stack(stk,G{i});
  if(r==0)
   continue;
  endif
  generate(stk,l-1,G,file_id);
  [r,stk]=pop_stack(stk);
 endfor
endfunction

function printInfo(stk,G,file_id)

 cell=stk.stack;
 for k =1:length(stk.stack)
   if(cell{k}==G{1})
    fprintf(file_id,"H");
   endif
   if(cell{k}==G{2})
    fprintf(file_id,"T");
   endif
   if(cell{k}==G{3})
    fprintf(file_id,"t");
   endif
 endfor 
 vect=getMainVector(stk.mat);
 fprintf(file_id,",%12.12f,%12.12f,%12.12f\n",vect(1),vect(2),vect(3));
endfunction
